package cn.tedu._05mvcboot01.controller;

import cn.tedu._05mvcboot01.pojo.dto.UserLoginDTO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

/**
 * 动态请求
 *  添加在类上:
 *      @Controller注解:将此类标识为一个控制器类
 */
@Controller
public class UserController {
    /**
     * 添加在控制器方法上
     *      @RequestMapping请求注解,根据请求地址找到对应的控制器方法
     *      @ResponseBody响应注解,允许控制器方法以返回值的形式返回给客户端数据
     */
    //http://localhost:8080/v1/users/login
    /**
        HTTP
            HTTP协议:超文本传输协议
                是一种没有状态的协议(一次请求一次会话)
                使用tcp进行数据传输

        HTTP与HTTPS协议的区别:
            HTTP:
                传输方式:数据以明文的方式进行传输
                特性:不安全,但是传输效率高
                默认端口:80
            HTTPS:
                传输方式:数据以密文的方式进行传输
                特性:安全,但是效率相对来说较低
                默认端口:443
                HTTPS协议:SSL证书-CA证书认证中心来做证书
     */
    /**
        请求方法(类别):
            GET请求:服务器端获取资源,比如:查看订单,查看购物车,查看微博,查看朋友圈......
            POST请求:服务器端新增资源,比如:注册,添加购物车,发微博,发朋友圈......
            PUT请求:服务器端更新资源,比如:订单状态,修改个人信息,修改收货地址......
            DELETE请求:服务器端删除资源,比如:删除订单,删除零钱明细......
     */
    /**服务端接受客户端的数据:
           方法一:HttpServletRequest对象接收*/
    /**@RequestMapping("/v1/users/login")
    @ResponseBody
    public String login(HttpServletRequest request){
        /*1.GET请求:http://localhost:8080/v1/users/login?username=xxx&password=xxx
            注意:getParameter("")中参数名为URL地址查询参数中的名称,比如:
                查询参数:username=xxx
                服务端:request.getParameter("username")
          2.POST请求:
            <input type="text" name="username">
        /*
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        return "用户:"+username+
                "<br>密码:"+password+
                "<br>恭喜你,登陆成功!";
    }*/

    /**    方法二:声明参数方式接收*/
    /**@RequestMapping("v1/users/login")
    @ResponseBody
    public String login(String username,String password){
                return "用户:"+username+
                "<br>密码:"+password+
                "<br>恭喜你,登陆成功!";
    }*/

    /**
     * 方式三:声明POJO类方式接收
     *     1.实体类:Entity
     *     2.VO类:服务端-->客户端
     *     3.DTO类:客户端-->服务端
     */
    @RequestMapping("v1/users/login")
    @ResponseBody
    public String login(UserLoginDTO userLoginDTO){
       String username = userLoginDTO.getUsername();
       String password = userLoginDTO.getPassword();
        return "用户:"+username+
                "<br>密码:"+password+
                "<br>恭喜你,登陆成功!";
    }
}